package cn.sanli.manage.service;


import cn.sanli.manage.pojo.dto.User.*;
import cn.sanli.manage.pojo.entity.UserInfo;
import cn.sanli.manage.pojo.vo.UserInfoVO;
import cn.sanli.manage.pojo.vo.UserMessage;
import com.github.pagehelper.PageInfo;

/**
 * 用户信息表(userInfo)表服务接口
 *
 * @author makejava
 * @since 2023-12-04 15:34:25
 */
public interface UserInfoService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    UserInfo queryById(Integer id);

    /**
     * 新增数据
     *
     * @param  userinfo
     * @return 实例对象
     */
    UserInfo insert(UserInfo userinfo);

    /**
     * 修改数据
     *
     * @param  info 修改信息
     * @return
     */
    UserInfo update(UpdateUserDTO info);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 用户分页列表
     * @param userInfoDto 查询对象
     * @return
     */
    PageInfo<UserInfoVO> findByPage(UserInfoDTO userInfoDto, UserMessage message);

    /**
     * 添加用户
     *
     * @param info 用户信息
     */
    void saveUser(UserDTO info, UserMessage message);

    /**
     * 账号锁定
     *
     * @param userIsLockDto 用户账号有无被锁定【1：正常使用，2：账号被锁定】
     */
    void updateIsLock(UserIsLockDTO userIsLockDto);

    /**
     * 删除用户
     *
     * @param id 用户id
     */
    void updateIsDelete(Integer id, UserMessage message);

    /**
     * 批量删除
     *
     * @param info 用户id集合
     */
    void batchDelete(BatchDeleteUserDTO info, UserMessage message);

    /**
     * 重置密码
     *
     * @param id 用户id
     */
    void resetPassWord(Integer id);

    /**
     * 修改当前登录用户
     *
     * @param info    修改信息
     * @param message 登录用户信息
     * @return
     */
    UserInfo updateLoginUser(UpdateLoginUserDTO info, UserMessage message);

    /**
     * 查询工号是否存在
     * @param num 工号
     */
    void findByNum(String num);

    /**
     * 查询用户信息
     *
     * @param num 工号
     * @return
     */
    UserInfoVO findUserInfo(String num);

    //void updateUserStandard(UserStandardDTO info);
}

